package org.zffc.common.util;

import cn.hutool.core.util.StrUtil;
import org.slf4j.MDC;

import java.util.UUID;

/**
 *
 * traceId工具类
 */
public class TraceIdUtils {
    public static final String TRACE_ID = "traceId";

    /**
     * 生成 traceId
     */
    private static String genTraceId() {
        return UUID.randomUUID().toString();
    }

    /**
     * 设置 traceId
     */
    public static void setTraceId(String traceId) {
        // 如果参数为空，则生成新 ID
        traceId = StrUtil.isBlank(traceId) ? genTraceId() : traceId;
        // 将 traceId 放到 MDC 中
        MDC.put(TRACE_ID, traceId);
    }

    /**
     * 获取 traceId
     */
    public static String getTraceId() {
        // 获取
        String traceId = MDC.get(TRACE_ID);
        // 如果 traceId 为空，则生成新 ID
        return StrUtil.isBlank(traceId) ? genTraceId() : traceId;
    }

    /**
     * 清理traceId
     */
    public static void clearTraceId(){
        MDC.remove(TRACE_ID);
    }
}